const mongoose = require('mongoose');

const CommentSchema = new mongoose.Schema({
    postId: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Post',
        required: true
    },
    openid: {
        type: String,
        required: true
    },
    content: {
        type: String,
        required: true
    },
    // 父评论ID，如果是一级评论则为null
    parentId: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Comment',
        default: null
    },
    // 根评论ID，方便查询整个评论树
    // 根评论ID，用于标识所属的根评论（顶级评论），方便查询整个评论树
    rootCommentId: {
        type: mongoose.Schema.Types.ObjectId, // 使用 MongoDB 的 ObjectId 类型
        ref: 'Comment',                       // 关联到自身的 Comment 模型
        default: null                         // 默认值为 null，表示没有父级评论
    },
    // 评论层级：1=一级评论，2=回复评论，3=回复的回复...
    depth: {
        type: Number,
        default: 1
    },
    //点赞数量
    likeCount: {
        type: Number,
        default: 0
    },
    // 点赞的用户列表
    likedBy: {
        type: [String], // 存储用户的openid
        default: []
    },
    time: {
        type: Date,
        default: Date.now
    },
    // 评论作者信息快照
    authorInfo: {
        type: Object,
        default: {
            nickName: '用户',
            avatarUrl: ''
        }
    },
    // 被回复的评论ID（针对回复评论）
    replyTo: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Comment',
        default: null
    }
});

// 添加索引提高查询性能
CommentSchema.index({ postId: 1 });
CommentSchema.index({ parentId: 1 });
CommentSchema.index({ rootCommentId: 1 });

module.exports = mongoose.model('Comment', CommentSchema);